package Serveur;

//
//
//Classe XMLTools - Services de gestion des fichiers XML
//
//Edition A    : enregistrement et chargement d'un fichier XML
//
// + Version 1.0.0  : version initiale
//
//Contrainte : Nécéssite constructeur par défaut et getter and setter de l'objet à sérialiser.
//
/**
 *
 *
 * @author Nolan Potier - Universite de Nice/IUT - Departement informatique
 **/

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public final class XMLTools {

    private XMLTools() {
    }

    /**
     * Serialisation d'un objet dans un fichier
     * 
     * @param object
     *            objet a serialiser
     * @param filename
     *            chemin du fichier
     */
    @SuppressWarnings("finally")
    public static boolean store(Object object, String fileName, String version)
            throws FileNotFoundException, IOException {

        // Controler l'existence de la donnee
        //
        if (object == null)
            return false;

        // Construire le nom du fichier de donnees
        //
        String nomFichier = fileName + "-" + version + ".xml";

        // Ouvrir l'encodeur vers le fichier
        //
        XMLEncoder encoder = new XMLEncoder(new FileOutputStream(nomFichier));
        try {
            // Serialiser l'objet
            //
            encoder.writeObject(object);
            encoder.flush();
        } finally {
            // Fermer l'encodeur
            //
            encoder.close();
            System.out.println("Enregistrement du fichier " + nomFichier
                    + " : OK");
            return true;
        }
    }

    /**
     * Deserialisation d'un objet depuis un fichier
     * 
     * @param filename
     *            chemin du fichier
     */
    public static Object load(String fileName, String version)
            throws FileNotFoundException, IOException {
        Object object = null;

        // Construire le nom du fichier source des donnees
        //
        String nomFichier = fileName + "-" + version + ".xml";

        // Ouvrir le decodeur
        //
        XMLDecoder decoder = new XMLDecoder(new FileInputStream(nomFichier));
        try {
            // Deserialiser l'objet
            //
            object = decoder.readObject();
        } finally {
            // Fermer le decodeur
            //
            decoder.close();
        }
        // Restituer l'objet
        //
        System.out.println("Chargement du fichier " + nomFichier + " : OK");
        return object;
    }
}
